package it.polimi.traveldream.persistence;

import java.io.Serializable;

import javax.persistence.*;

import java.util.Date;
import java.util.LinkedList;
import java.util.List;


/**
 * The persistent class for the prenotazione_hotel database table.
 * 
 */
@Entity
@Table(name="prenotazione_hotel")
@NamedQueries({
	@NamedQuery(name="PrenotazioneHotel.findAll", query="SELECT p FROM PrenotazioneHotel p"),
	@NamedQuery(name="PrenotazioneHotel.findGift", query="SELECT p FROM PrenotazioneHotel p WHERE p.giftListHotels !=null")
})

public class PrenotazioneHotel implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private int IDPrenotazione;

	@Temporal(TemporalType.TIMESTAMP)
	private Date checkin;

	@Temporal(TemporalType.TIMESTAMP)
	private Date checkout;

	private int numeroPersone;

	//bi-directional many-to-one association to Hotel
	@ManyToOne
	@JoinColumn(name="IDHotel")
	private Hotel hotel;

	//bi-directional many-to-one association to PacchettoPersonalizzato
	@ManyToOne
	@JoinColumn(name="IDPacchettoPers")
	private PacchettoPersonalizzato pacchettoPersonalizzato;

	//bi-directional many-to-many association to PacchettoPersonalizzato
	@ManyToMany
	@JoinTable(
		name="gift_list_hotel"
		, joinColumns={
			@JoinColumn(name="IDPrenotazioneHotel")
			}
		, inverseJoinColumns={
			@JoinColumn(name="IDPacchettoPers")
			}
		)
	private List<PacchettoPersonalizzato> pacchettoPersonalizzatos = new LinkedList<PacchettoPersonalizzato>();

	//bi-directional many-to-one association to GiftListHotel
	@OneToOne(mappedBy="prenotazioneHotel")
	private GiftListHotel giftListHotels;

	public PrenotazioneHotel() {
	}

	public int getIDPrenotazione() {
		return this.IDPrenotazione;
	}

	public void setIDPrenotazione(int IDPrenotazione) {
		this.IDPrenotazione = IDPrenotazione;
	}

	public Date getCheckin() {
		return this.checkin;
	}

	public void setCheckin(Date checkin) {
		this.checkin = checkin;
	}

	public Date getCheckout() {
		return this.checkout;
	}

	public void setCheckout(Date checkout) {
		this.checkout = checkout;
	}

	public int getNumeroPersone() {
		return this.numeroPersone;
	}

	public void setNumeroPersone(int numeroPersone) {
		this.numeroPersone = numeroPersone;
	}

	public Hotel getHotel() {
		return this.hotel;
	}

	public void setHotel(Hotel hotel) {
		this.hotel = hotel;
	}

	public PacchettoPersonalizzato getPacchettoPersonalizzato() {
		return this.pacchettoPersonalizzato;
	}

	public void setPacchettoPersonalizzato(PacchettoPersonalizzato pacchettoPersonalizzato) {
		this.pacchettoPersonalizzato = pacchettoPersonalizzato;
	}

	public List<PacchettoPersonalizzato> getPacchettoPersonalizzatos() {
		return this.pacchettoPersonalizzatos;
	}

	public void setPacchettoPersonalizzatos(List<PacchettoPersonalizzato> pacchettoPersonalizzatos) {
		this.pacchettoPersonalizzatos = pacchettoPersonalizzatos;
	}

	public GiftListHotel getGiftListHotels() {
		return this.giftListHotels;
	}

	public void setGiftListHotels(GiftListHotel giftListHotels) {
		this.giftListHotels = giftListHotels;
	}

	/*public GiftListHotel addGiftListHotel(GiftListHotel giftListHotel) {
		getGiftListHotels().add(giftListHotel);
		giftListHotel.setPrenotazioneHotel(this);

		return giftListHotel;
	}

	public GiftListHotel removeGiftListHotel(GiftListHotel giftListHotel) {
		getGiftListHotels().remove(giftListHotel);
		giftListHotel.setPrenotazioneHotel(null);

		return giftListHotel;
	}*/

}